/*
不建议使用
不建议使用
不建议使用
请转到aapt包下使用aapt.go
*/

package apktools

import (
	"bytes"
	"encoding/xml"
	"fmt"
	"io/ioutil"
	"log"
	"os"
	"os/exec"
	"path"
	"path/filepath"
	"strings"

	"gopkg.in/yaml.v2"
)

var apktoolDarwin = []byte("\x23\x21\x2F\x62\x69\x6E\x2F\x62\x61\x73\x68\x0A\x23\x0A\x23\x20\x43\x6F\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\x20\x32\x30\x30\x37\x20\x54\x68\x65\x20\x41\x6E\x64\x72\x6F\x69\x64\x20\x4F\x70\x65\x6E\x20\x53\x6F\x75\x72\x63\x65\x20\x50\x72\x6F\x6A\x65\x63\x74\x0A\x23\x0A\x23\x20\x4C\x69\x63\x65\x6E\x73\x65\x64\x20\x75\x6E\x64\x65\x72\x20\x74\x68\x65\x20\x41\x70\x61\x63\x68\x65\x20\x4C\x69\x63\x65\x6E\x73\x65\x2C\x20\x56\x65\x72\x73\x69\x6F\x6E\x20\x32\x2E\x30\x20\x28\x74\x68\x65\x20\x22\x4C\x69\x63\x65\x6E\x73\x65\x22\x29\x3B\x0A\x23\x20\x79\x6F\x75\x20\x6D\x61\x79\x20\x6E\x6F\x74\x20\x75\x73\x65\x20\x74\x68\x69\x73\x20\x66\x69\x6C\x65\x20\x65\x78\x63\x65\x70\x74\x20\x69\x6E\x20\x63\x6F\x6D\x70\x6C\x69\x61\x6E\x63\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x4C\x69\x63\x65\x6E\x73\x65\x2E\x0A\x23\x20\x59\x6F\x75\x20\x6D\x61\x79\x20\x6F\x62\x74\x61\x69\x6E\x20\x61\x20\x63\x6F\x70\x79\x20\x6F\x66\x20\x74\x68\x65\x20\x4C\x69\x63\x65\x6E\x73\x65\x20\x61\x74\x0A\x23\x0A\x23\x20\x20\x20\x20\x20\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x61\x70\x61\x63\x68\x65\x2E\x6F\x72\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x73\x2F\x4C\x49\x43\x45\x4E\x53\x45\x2D\x32\x2E\x30\x0A\x23\x0A\x23\x20\x55\x6E\x6C\x65\x73\x73\x20\x72\x65\x71\x75\x69\x72\x65\x64\x20\x62\x79\x20\x61\x70\x70\x6C\x69\x63\x61\x62\x6C\x65\x20\x6C\x61\x77\x20\x6F\x72\x20\x61\x67\x72\x65\x65\x64\x20\x74\x6F\x20\x69\x6E\x20\x77\x72\x69\x74\x69\x6E\x67\x2C\x20\x73\x6F\x66\x74\x77\x61\x72\x65\x0A\x23\x20\x64\x69\x73\x74\x72\x69\x62\x75\x74\x65\x64\x20\x75\x6E\x64\x65\x72\x20\x74\x68\x65\x20\x4C\x69\x63\x65\x6E\x73\x65\x20\x69\x73\x20\x64\x69\x73\x74\x72\x69\x62\x75\x74\x65\x64\x20\x6F\x6E\x20\x61\x6E\x20\x22\x41\x53\x20\x49\x53\x22\x20\x42\x41\x53\x49\x53\x2C\x0A\x23\x20\x57\x49\x54\x48\x4F\x55\x54\x20\x57\x41\x52\x52\x41\x4E\x54\x49\x45\x53\x20\x4F\x52\x20\x43\x4F\x4E\x44\x49\x54\x49\x4F\x4E\x53\x20\x4F\x46\x20\x41\x4E\x59\x20\x4B\x49\x4E\x44\x2C\x20\x65\x69\x74\x68\x65\x72\x20\x65\x78\x70\x72\x65\x73\x73\x20\x6F\x72\x20\x69\x6D\x70\x6C\x69\x65\x64\x2E\x0A\x23\x20\x53\x65\x65\x20\x74\x68\x65\x20\x4C\x69\x63\x65\x6E\x73\x65\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x6C\x61\x6E\x67\x75\x61\x67\x65\x20\x67\x6F\x76\x65\x72\x6E\x69\x6E\x67\x20\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x73\x20\x61\x6E\x64\x0A\x23\x20\x6C\x69\x6D\x69\x74\x61\x74\x69\x6F\x6E\x73\x20\x75\x6E\x64\x65\x72\x20\x74\x68\x65\x20\x4C\x69\x63\x65\x6E\x73\x65\x2E\x0A\x0A\x23\x20\x54\x68\x69\x73\x20\x73\x63\x72\x69\x70\x74\x20\x69\x73\x20\x61\x20\x77\x72\x61\x70\x70\x65\x72\x20\x66\x6F\x72\x20\x73\x6D\x61\x6C\x69\x2E\x6A\x61\x72\x2C\x20\x73\x6F\x20\x79\x6F\x75\x20\x63\x61\x6E\x20\x73\x69\x6D\x70\x6C\x79\x20\x63\x61\x6C\x6C\x20\x22\x73\x6D\x61\x6C\x69\x22\x2C\x0A\x23\x20\x69\x6E\x73\x74\x65\x61\x64\x20\x6F\x66\x20\x6A\x61\x76\x61\x20\x2D\x6A\x61\x72\x20\x73\x6D\x61\x6C\x69\x2E\x6A\x61\x72\x2E\x20\x49\x74\x20\x69\x73\x20\x68\x65\x61\x76\x69\x6C\x79\x20\x62\x61\x73\x65\x64\x20\x6F\x6E\x20\x74\x68\x65\x20\x22\x64\x78\x22\x20\x73\x63\x72\x69\x70\x74\x0A\x23\x20\x66\x72\x6F\x6D\x20\x74\x68\x65\x20\x41\x6E\x64\x72\x6F\x69\x64\x20\x53\x44\x4B\x0A\x0A\x23\x20\x53\x65\x74\x20\x75\x70\x20\x70\x72\x6F\x67\x20\x74\x6F\x20\x62\x65\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x6F\x66\x20\x74\x68\x69\x73\x20\x73\x63\x72\x69\x70\x74\x2C\x20\x69\x6E\x63\x6C\x75\x64\x69\x6E\x67\x20\x66\x6F\x6C\x6C\x6F\x77\x69\x6E\x67\x20\x73\x79\x6D\x6C\x69\x6E\x6B\x73\x2C\x0A\x23\x20\x61\x6E\x64\x20\x73\x65\x74\x20\x75\x70\x20\x70\x72\x6F\x67\x64\x69\x72\x20\x74\x6F\x20\x62\x65\x20\x74\x68\x65\x20\x66\x75\x6C\x6C\x79\x2D\x71\x75\x61\x6C\x69\x66\x69\x65\x64\x20\x70\x61\x74\x68\x6E\x61\x6D\x65\x20\x6F\x66\x20\x69\x74\x73\x20\x64\x69\x72\x65\x63\x74\x6F\x72\x79\x2E\x0A\x70\x72\x6F\x67\x3D\x22\x24\x30\x22\x0A\x77\x68\x69\x6C\x65\x20\x5B\x20\x2D\x68\x20\x22\x24\x7B\x70\x72\x6F\x67\x7D\x22\x20\x5D\x3B\x20\x64\x6F\x0A\x20\x20\x20\x20\x6E\x65\x77\x50\x72\x6F\x67\x3D\x60\x2F\x62\x69\x6E\x2F\x6C\x73\x20\x2D\x6C\x64\x20\x22\x24\x7B\x70\x72\x6F\x67\x7D\x22\x60\x0A\x0A\x20\x20\x20\x20\x6E\x65\x77\x50\x72\x6F\x67\x3D\x60\x65\x78\x70\x72\x20\x22\x24\x7B\x6E\x65\x77\x50\x72\x6F\x67\x7D\x22\x20\x3A\x20\x22\x2E\x2A\x20\x2D\x3E\x20\x5C\x28\x2E\x2A\x5C\x29\x24\x22\x60\x0A\x20\x20\x20\x20\x69\x66\x20\x65\x78\x70\x72\x20\x22\x78\x24\x7B\x6E\x65\x77\x50\x72\x6F\x67\x7D\x22\x20\x3A\x20\x27\x78\x2F\x27\x20\x3E\x2F\x64\x65\x76\x2F\x6E\x75\x6C\x6C\x3B\x20\x74\x68\x65\x6E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6F\x67\x3D\x22\x24\x7B\x6E\x65\x77\x50\x72\x6F\x67\x7D\x22\x0A\x20\x20\x20\x20\x65\x6C\x73\x65\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6F\x67\x64\x69\x72\x3D\x60\x64\x69\x72\x6E\x61\x6D\x65\x20\x22\x24\x7B\x70\x72\x6F\x67\x7D\x22\x60\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6F\x67\x3D\x22\x24\x7B\x70\x72\x6F\x67\x64\x69\x72\x7D\x2F\x24\x7B\x6E\x65\x77\x50\x72\x6F\x67\x7D\x22\x0A\x20\x20\x20\x20\x66\x69\x0A\x64\x6F\x6E\x65\x0A\x6F\x6C\x64\x77\x64\x3D\x60\x70\x77\x64\x60\x0A\x70\x72\x6F\x67\x64\x69\x72\x3D\x60\x64\x69\x72\x6E\x61\x6D\x65\x20\x22\x24\x7B\x70\x72\x6F\x67\x7D\x22\x60\x0A\x63\x64\x20\x22\x24\x7B\x70\x72\x6F\x67\x64\x69\x72\x7D\x22\x0A\x70\x72\x6F\x67\x64\x69\x72\x3D\x60\x70\x77\x64\x60\x0A\x70\x72\x6F\x67\x3D\x22\x24\x7B\x70\x72\x6F\x67\x64\x69\x72\x7D\x22\x2F\x60\x62\x61\x73\x65\x6E\x61\x6D\x65\x20\x22\x24\x7B\x70\x72\x6F\x67\x7D\x22\x60\x0A\x63\x64\x20\x22\x24\x7B\x6F\x6C\x64\x77\x64\x7D\x22\x0A\x0A\x6A\x61\x72\x66\x69\x6C\x65\x3D\x61\x70\x6B\x74\x6F\x6F\x6C\x2E\x6A\x61\x72\x0A\x6C\x69\x62\x64\x69\x72\x3D\x22\x24\x70\x72\x6F\x67\x64\x69\x72\x22\x0A\x69\x66\x20\x5B\x20\x21\x20\x2D\x72\x20\x22\x24\x6C\x69\x62\x64\x69\x72\x2F\x24\x6A\x61\x72\x66\x69\x6C\x65\x22\x20\x5D\x0A\x74\x68\x65\x6E\x0A\x20\x20\x20\x20\x65\x63\x68\x6F\x20\x60\x62\x61\x73\x65\x6E\x61\x6D\x65\x20\x22\x24\x70\x72\x6F\x67\x22\x60\x22\x3A\x20\x63\x61\x6E\x27\x74\x20\x66\x69\x6E\x64\x20\x24\x6A\x61\x72\x66\x69\x6C\x65\x22\x0A\x20\x20\x20\x20\x65\x78\x69\x74\x20\x31\x0A\x66\x69\x0A\x0A\x6A\x61\x76\x61\x4F\x70\x74\x73\x3D\x22\x22\x0A\x0A\x23\x20\x49\x66\x20\x79\x6F\x75\x20\x77\x61\x6E\x74\x20\x44\x58\x20\x74\x6F\x20\x68\x61\x76\x65\x20\x6D\x6F\x72\x65\x20\x6D\x65\x6D\x6F\x72\x79\x20\x77\x68\x65\x6E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x2C\x20\x75\x6E\x63\x6F\x6D\x6D\x65\x6E\x74\x20\x74\x68\x65\x20\x66\x6F\x6C\x6C\x6F\x77\x69\x6E\x67\x0A\x23\x20\x6C\x69\x6E\x65\x20\x61\x6E\x64\x20\x61\x64\x6A\x75\x73\x74\x20\x74\x68\x65\x20\x76\x61\x6C\x75\x65\x20\x61\x63\x63\x6F\x72\x64\x69\x6E\x67\x6C\x79\x2E\x20\x55\x73\x65\x20\x22\x6A\x61\x76\x61\x20\x2D\x58\x22\x20\x66\x6F\x72\x20\x61\x20\x6C\x69\x73\x74\x20\x6F\x66\x20\x6F\x70\x74\x69\x6F\x6E\x73\x0A\x23\x20\x79\x6F\x75\x20\x63\x61\x6E\x20\x70\x61\x73\x73\x20\x68\x65\x72\x65\x2E\x0A\x23\x0A\x6A\x61\x76\x61\x4F\x70\x74\x73\x3D\x22\x2D\x58\x6D\x78\x35\x31\x32\x4D\x20\x2D\x44\x66\x69\x6C\x65\x2E\x65\x6E\x63\x6F\x64\x69\x6E\x67\x3D\x75\x74\x66\x2D\x38\x22\x0A\x0A\x23\x20\x41\x6C\x74\x65\x72\x6E\x61\x74\x69\x76\x65\x6C\x79\x2C\x20\x74\x68\x69\x73\x20\x77\x69\x6C\x6C\x20\x65\x78\x74\x72\x61\x63\x74\x20\x61\x6E\x79\x20\x70\x61\x72\x61\x6D\x65\x74\x65\x72\x20\x22\x2D\x4A\x78\x78\x78\x22\x20\x66\x72\x6F\x6D\x20\x74\x68\x65\x20\x63\x6F\x6D\x6D\x61\x6E\x64\x20\x6C\x69\x6E\x65\x0A\x23\x20\x61\x6E\x64\x20\x70\x61\x73\x73\x20\x74\x68\x65\x6D\x20\x74\x6F\x20\x4A\x61\x76\x61\x20\x28\x69\x6E\x73\x74\x65\x61\x64\x20\x6F\x66\x20\x74\x6F\x20\x64\x78\x29\x2E\x20\x54\x68\x69\x73\x20\x6D\x61\x6B\x65\x73\x20\x69\x74\x20\x70\x6F\x73\x73\x69\x62\x6C\x65\x20\x66\x6F\x72\x20\x79\x6F\x75\x20\x74\x6F\x0A\x23\x20\x61\x64\x64\x20\x61\x20\x63\x6F\x6D\x6D\x61\x6E\x64\x2D\x6C\x69\x6E\x65\x20\x70\x61\x72\x61\x6D\x65\x74\x65\x72\x20\x73\x75\x63\x68\x20\x61\x73\x20\x22\x2D\x4A\x58\x6D\x78\x32\x35\x36\x4D\x22\x20\x69\x6E\x20\x79\x6F\x75\x72\x20\x61\x6E\x74\x20\x73\x63\x72\x69\x70\x74\x73\x2C\x20\x66\x6F\x72\x0A\x23\x20\x65\x78\x61\x6D\x70\x6C\x65\x2E\x0A\x77\x68\x69\x6C\x65\x20\x65\x78\x70\x72\x20\x22\x78\x24\x31\x22\x20\x3A\x20\x27\x78\x2D\x4A\x27\x20\x3E\x2F\x64\x65\x76\x2F\x6E\x75\x6C\x6C\x3B\x20\x64\x6F\x0A\x20\x20\x20\x20\x6F\x70\x74\x3D\x60\x65\x78\x70\x72\x20\x22\x24\x31\x22\x20\x3A\x20\x27\x2D\x4A\x5C\x28\x2E\x2A\x5C\x29\x27\x60\x0A\x20\x20\x20\x20\x6A\x61\x76\x61\x4F\x70\x74\x73\x3D\x22\x24\x7B\x6A\x61\x76\x61\x4F\x70\x74\x73\x7D\x20\x2D\x24\x7B\x6F\x70\x74\x7D\x22\x0A\x20\x20\x20\x20\x73\x68\x69\x66\x74\x0A\x64\x6F\x6E\x65\x0A\x0A\x69\x66\x20\x5B\x20\x22\x24\x4F\x53\x54\x59\x50\x45\x22\x20\x3D\x20\x22\x63\x79\x67\x77\x69\x6E\x22\x20\x5D\x20\x3B\x20\x74\x68\x65\x6E\x0A\x09\x6A\x61\x72\x70\x61\x74\x68\x3D\x60\x63\x79\x67\x70\x61\x74\x68\x20\x2D\x77\x20\x20\x22\x24\x6C\x69\x62\x64\x69\x72\x2F\x24\x6A\x61\x72\x66\x69\x6C\x65\x22\x60\x0A\x65\x6C\x73\x65\x0A\x09\x6A\x61\x72\x70\x61\x74\x68\x3D\x22\x24\x6C\x69\x62\x64\x69\x72\x2F\x24\x6A\x61\x72\x66\x69\x6C\x65\x22\x0A\x66\x69\x0A\x0A\x23\x20\x61\x64\x64\x20\x63\x75\x72\x72\x65\x6E\x74\x20\x6C\x6F\x63\x61\x74\x69\x6F\x6E\x20\x74\x6F\x20\x70\x61\x74\x68\x20\x66\x6F\x72\x20\x61\x61\x70\x74\x0A\x50\x41\x54\x48\x3D\x24\x50\x41\x54\x48\x3A\x60\x70\x77\x64\x60\x3B\x0A\x65\x78\x70\x6F\x72\x74\x20\x50\x41\x54\x48\x3B\x0A\x65\x78\x65\x63\x20\x6A\x61\x76\x61\x20\x24\x6A\x61\x76\x61\x4F\x70\x74\x73\x20\x2D\x44\x6A\x61\x76\x61\x2E\x61\x77\x74\x2E\x68\x65\x61\x64\x6C\x65\x73\x73\x3D\x74\x72\x75\x65\x20\x2D\x6A\x61\x72\x20\x22\x24\x6A\x61\x72\x70\x61\x74\x68\x22\x20\x22\x24\x40\x22\x0A")
var pkgDirs = make([]string, 0)

func main() {
	//获取当前文件夹
	appDir, _ := os.Open(filepath.Dir(os.Args[0]))
	defer appDir.Close()
	//检查当前目录的apktool文件是否存在，不存在就直接创建一个
	tmpFile := filepath.Join(appDir.Name(), "apktool")
	apktoolFile, err := os.Open(tmpFile)
	if err != nil {
		f, _ := os.Create(tmpFile)
		defer f.Close()
		f.Write(apktoolDarwin)
		apktoolFile, _ = os.Open(tmpFile)
	}
	defer apktoolFile.Close()
	//授予apktool权限
	chomdFile(apktoolFile.Name())
	chomdFile(filepath.Join(appDir.Name(), "apktool.jar"))
	//遍历当前文件夹下的所有apk安装包
	fis, _ := appDir.Readdir(-1)
	for _, fi := range fis {
		name := fi.Name()
		if path.Ext(name) == ".apk" {
			//如果发现有相同安装包目录，将其删除
			decomDir := filepath.Join(appDir.Name(), strings.TrimSuffix(path.Base(name), path.Ext(name)))
			/*	_, err := os.Stat(decomDir)
				if err == nil {
					//fmt.Println("删除文件夹：", decomDir)
					os.RemoveAll(decomDir)
				}*/
			//cmdShell: apktool d *.apk 解包
			c := exec.Command(
				apktoolFile.Name(),
				`d`,
				`-f`,
				`-s`,
				`-k`,
				`-b`,
				name,
			)
			var out bytes.Buffer
			c.Stdout = &out
			c.Stderr = &out
			c.Run()
			c.Wait()
			if strings.Contains(out.String(), "can't find") {
				fmt.Println("apktool.jar文件不存在！请前往https://bitbucket.org/iBotPeaches/apktool/downloads/下载，并重命名为apktool.jar")
			} else {
				//fmt.Println(out.String())
				if c.ProcessState.Success() {
					//fmt.Println("Success")
					pkgDirs = append(pkgDirs, decomDir)
				}
			}
		} else {
			continue
		}
	}
	//读apk解包后需要的信息
	for n := range pkgDirs {
		fmt.Println("===================================================")
		fmt.Println("发现安装包：", pkgDirs[n]+".apk")
		/*xml*/
		manifestXml := filepath.Join(pkgDirs[n], "AndroidManifest.xml")
		content, err := ioutil.ReadFile(manifestXml)
		if err != nil {
			log.Fatal(err)
		}
		var result manifest
		err = xml.Unmarshal(content, &result)

		if err != nil {
			log.Fatal(err)
		}

		apkLabel := result.Application.Label
		if strings.Contains(apkLabel, "@string/") {
			labelKey := strings.TrimPrefix(apkLabel, "@string/")
			stringFile := filepath.Join(pkgDirs[n], "res", "values", "strings.xml")
			stringXml, _ := ioutil.ReadFile(stringFile)
			var res resources
			err = xml.Unmarshal(stringXml, &res)
			if err != nil {
				log.Fatal(err)
			}
			for _, key := range res.Strings {
				if key.Name == labelKey {
					fmt.Println("应用名：", key.Value)
					break
				}
			}
		}
		fmt.Println("图标：")
		apkIcon := result.Application.Icon
		iconSplit := strings.Split(apkIcon, "/")
		if len(iconSplit) > 1 {
			iconDir := strings.TrimPrefix(iconSplit[0], "@")
			icon := iconSplit[1]
			resDir, _ := os.Open(filepath.Join(pkgDirs[n], "res"))
			defer resDir.Close()
			refis, _ := resDir.Readdir(-1)
			for _, fi := range refis {
				name := fi.Name()
				if !fi.IsDir() || !strings.HasPrefix(name, iconDir) {
					continue
				}
				if strings.Contains(name, "-xhdpi") { //取96*96大小图标，取全部将此行注释掉
					imgDir, _ := os.Open(filepath.Join(pkgDirs[n], "res", name))
					defer imgDir.Close()
					imgFiles, _ := imgDir.Readdir(-1)
					for _, f := range imgFiles {
						if strings.HasPrefix(f.Name(), icon) {
							//过滤文件名前面的 ic_launcher_****.png
							if len(f.Name())-len(icon) == 4 {
								fmt.Println("\t", filepath.Join(imgDir.Name(), f.Name()))
							}
						}
					}
				}

			}

		}
		fmt.Println("包名称：", result.Package)
		fmt.Println("应用授权：")
		for k := range result.Permission {
			fmt.Println("\t", result.Permission[k].Name)
		}
		/*yml*/
		ymlFile := filepath.Join(pkgDirs[n], "apktool.yml")
		ymlContent, err := ioutil.ReadFile(ymlFile)
		if err != nil {
			log.Fatal(err)
		}
		var t apktoolYml
		err = yaml.Unmarshal(ymlContent, &t)
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println("版本号：", t.VersionInfo.VersionCode)
		fmt.Println("版本名：", t.VersionInfo.VersionName)
	}
}
func chomdFile(file string) {
	cmd := exec.Command(
		`chmod`,
		`+x`,
		file,
	)
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr
	cmd.Run()
	cmd.Wait()
}

/*AndroidManifest.xml*/
type manifest struct {
	Package     string         `xml:"package,attr"`
	Permission  []permission   `xml:"uses-permission"`
	Application applicationXml `xml:"application"`
}
type permission struct {
	Name string `xml:"name,attr"`
}
type applicationXml struct {
	Label    string      `xml:"label,attr"`
	Icon     string      `xml:"icon,attr"`
	Activity activityXML `xml:"activity"`
}
type activityXML struct {
	Name     string        `xml:"name,attr"`
	MetaData []metaDataXML `xml:"meta-data"`
}

type metaDataXML struct {
	Name  string `xml:"name,attr"`
	Value string `xml:"value,attr"`
}

/*strings.xml*/
type resources struct {
	Strings []String `xml:"string"`
}
type String struct {
	Name  string `xml:"name,attr"`
	Value string `xml:",innerxml"`
}

/*yml*/
type apktoolYml struct {
	VersionInfo struct {
		VersionCode string `yaml:"versionCode"`
		VersionName string `yaml:"versionName"`
	} `yaml:"versionInfo"`
}
